﻿using BW.WMS.Core.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BW.WMS.Domain.Entities.Warehouse
{
    /// <summary>
    /// WMS仓库管理—仓库实体
    /// </summary>
    public class WMS_Warehouse:BaseEntity
    {
        /// <summary>
        /// 仓库编号，如"CKBH1358" - 用于唯一标识仓库
        /// </summary>
        public string WarehouseCode { get; set; } = string.Empty;

        /// <summary>
        /// 仓库名称，如"仓库一" - 仓库的显示名称
        /// </summary>
        public string WarehouseName { get; set; } = string.Empty;

        /// <summary>
        /// 仓库容量，单位为立方米(m³) - 表示仓库的总存储容量
        /// </summary>
        public double Capacity { get; set; } 

        /// <summary>
        /// 仓库地址 - 仓库的物理位置信息
        /// </summary>
        public string Address { get; set; } = string.Empty;

        /// <summary>
        /// 联系电话 - 仓库联系电话
        /// </summary>
        public string Phone { get; set; } = string.Empty;

        /// <summary>
        /// 库管部门 - 负责管理该仓库的部门，如"部门一"
        /// </summary>
        public long DepartmentId { get; set; }

        /// <summary>
        /// 仓库主管 - 负责该仓库的管理人员姓名
        /// </summary>
        public long ManagerId { get; set; }

        /// <summary>
        /// 库位数量 - 该仓库下的库位总数
        /// </summary>
        public int LocationCount { get; set; }

        /// <summary>
        /// 仓库状态 - 表示仓库当前的使用状态，对应WarehouseStatusEnum枚举值
        /// 1=启用，2=停用，3=锁定
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// 操作人 - 最后修改该仓库信息的操作员
        /// </summary>
        public string Operator { get; set; } = string.Empty;

        /// <summary>
        /// 操作时间 - 最后一次修改该仓库信息的时间
        /// </summary>
        public DateTime OperationTime { get; set; }= DateTime.Now;

        /// <summary>
        /// 备注 - 关于该仓库的附加说明信息
        /// </summary>
        public string Remark { get; set; } = string.Empty;

        /// <summary>
        /// 库位集合 - 一对多关系，表示该仓库包含的所有库位
        /// </summary>
        public ICollection<WMS_Location> Locations { get; set; }
    }
}
